3
תגובות
מחלקת משתמשים
פתח
soogo
,
מישהו יכול להביא לי קוד של מחלקת משתמשים שכתובה בצורה פשוטה אבל מקצועית
כדי שאני אוכל ללמוד יותר איך לכתוב מחלקות נכונות
כדי שאני אוכל ללמוד יותר איך לכתוב מחלקות נכונות
3 תשובות
יש בעיה עם השאלה הזו, בגלל שמי שמעדיף לכתוב "בצורה מקצועית" בדרך כלל לא כותב מחלקת משתמשים, אלא מארגן את הקוד שלו בצורה שונה לגמרי. מחלקות שמייצגות נתונים, מחלקות שעושות פעולות, מחלקות שאחראיות על פלט, מחלקות שאחראיות על גישה למסד
וההפרדה היא על בסיס מה המחלקה עושה ולא על בסיס בוא נדחוף הכל למחלקת משתמשים כי זה מתעסק במשתמשים
אבל סביר להניח שהיא תהיה רק מחלקת נתונים.
class UserModel
{
public function getUsername();
public function getFirstName();
public function getPassword();
public function getGroups();
}
{
public function getUsername();
public function getFirstName();
public function getPassword();
public function getGroups();
}
מחלקה אחרת תפעל על המחלקה הזאת:
class UserManager
{
public function register(...);
public function login(...);
public function restorePassword(...);
public function isInGroup(...);
}
{
public function register(...);
public function login(...);
public function restorePassword(...);
public function isInGroup(...);
}
מחלקה אחרת תקשר בין המחלקה הזאת למאגר נתונים:
class UserRepository
{
public function byId(...);
public function byFirstName(...);
public function getAllUsers(...);
public function getUsersInGroup(...);
}
{
public function byId(...);
public function byFirstName(...);
public function getAllUsers(...);
public function getUsersInGroup(...);
}
והמחלקה האחרונה תקשר בין הבקשה מהלקוח לתשובה ללקוח באמצעות UserModel, UserManager וקובצי תצוגה:
class UserController
{
public function register(...)
{
try {
$user = $userManager->register(...);
// notify by email
// show view
} catch (UserAlreadyExistsException $e) {
// ...
} catch ...
}
public function login(...);
public function restorePassword(...);
public function viewProfile(...);
}
{
public function register(...)
{
try {
$user = $userManager->register(...);
// notify by email
// show view
} catch (UserAlreadyExistsException $e) {
// ...
} catch ...
}
public function login(...);
public function restorePassword(...);
public function viewProfile(...);
}